<?php
class EventosController extends AppController {

	var $name = 'Eventos';
	var $helpers = array('javascript');
	function index() {
		$this->Evento->recursive = 0;
		$this->set('eventos', $this->paginate());
	}

	function view($id = null) {
		$this->autoRender=false;
		if (!$id) {
			$this->Session->setFlash('Debe proporcione un id de evento');
			$this->render('error');
		}else{
			$this->redirect(array('action'=>'edit',$id));			
		}
		//$this->set('evento', $this->Evento->read(null, $id));
	}

	function add($paciente_id = null,$tipo_de_evento = null) {
		$this->autoRender=false;
		if(($this->Evento->TiposDeEvento->find('first',array('conditions'=>array('TiposDeEvento.codigo_del_evento'=>$tipo_de_evento)))) 
			and
			($this->Evento->Paciente->find('first',array('conditions'=>array('Paciente.paciente_id'=>$paciente_id))))){
			$this->autoRender=true;
			$this->set('tipo_de_evento',$tipo_de_evento);
			$this->set('paciente_id',$paciente_id);
			
			$this->set('nombre_paciente',($this->Evento->Paciente->field('primer_nombre',array('Paciente.paciente_id'=>$paciente_id))).' '.($this->Evento->Paciente->field('primer_apellido',array('Paciente.paciente_id'=>$paciente_id)))); // Pasamos a la vista el nombre del paciente
			$this->set('departamentos_defecto',$this->Evento->Lugar->find('list',array(
															'conditions'=>array('Lugar.parent_id' => '33','Lugar.tipo_de_lugar'=> '2'),
															'fields'=>array('Lugar.lugar_id','Lugar.nombre_del_lugar'),
															'order' => 'Lugar.nombre_del_lugar'	
															)));
			if (!empty($this->data)) {
				$this->data['Evento']['usuario_id']=$this->Session->read('Auth.Usuario.usuario_id');
				$this->data['Evento']['codigo_del_evento']=$tipo_de_evento;//Este valor se podrìa asignar en la vista pues a la vista se le pasa la variable tipo_de_evento con esta informaciòn, sin embargo esto permitiría al usuario modificar el tipo de evento y mandar información inconsistente, una con el argumento del método y otra con los datos del formulario
				$this->data['Evento']['paciente_id']=$paciente_id;
				$this->Evento->create();
				if ($this->Evento->save($this->data)) {
					$this->redirect(array('controller'=>'eventos','action'=>'edit',$this->Evento->id));
				} else {
					$this->autoRender=false;
					$this->Session->setFlash('Error al guardar los datos. Por favor contacte con el administrador.');
					$this->render('/elements/error');
					return;
				}
			}
		}else{
			$this->Session->setFlash('El tipo de evento que esta intentando ingresar o el paciente al que desea agregarlo no existen en la base de datos');
			$this->render('/elements/error');
		}
	}

	function edit($id = null) {
		$this->autoRender=false;
		if (!$id) {
			$this->Session->setFlash('Debe proveer un id del evento');
			$this->render('/elements/error');
		}else{
			$evento=$this->Evento->find('first',array('recursive'=>0,'conditions'=>array('Evento.evento_id'=>$id)));
			if($evento){
				$this->autoRender=true;
				$this->set('departamentos_defecto',$this->Evento->Lugar->find('list',array(
																'conditions'=>array('Lugar.parent_id' => '33','Lugar.tipo_de_lugar'=> '2'),
																'fields'=>array('Lugar.lugar_id','Lugar.nombre_del_lugar'),
																'order' => 'Lugar.nombre_del_lugar'	
				)));
				
				if (empty($this->data)) {
					$this->data = $evento;
					$lugar=$this->Evento->Lugar->getpath($this->data['Lugar']['lugar_id']);
					$this->set('nombre_paciente',($this->Evento->Paciente->field('primer_nombre',array('Paciente.paciente_id'=>$this->data['Evento']['paciente_id']))).' '.($this->Evento->Paciente->field('primer_apellido',array('Paciente.paciente_id'=>$this->data['Evento']['paciente_id'])))); // Pasamos a la vista el nombre del paciente					
					if(isset($lugar[0])){
						$this->data['Evento']['codigo_pais']=$lugar[0]['Lugar']['lugar_id'];
						$this->data['Evento']['nombre_pais']=$lugar[0]['Lugar']['nombre_del_lugar'];
					}					 
					if(isset($lugar[1])) {
						$this->data['Evento']['codigo_departamento']=$lugar[1]['Lugar']['lugar_id'];
						$this->set('municipios',$this->Evento->Lugar->find('list',array(
						'conditions'=>array('Lugar.parent_id' => $this->data['Evento']['codigo_departamento']),
						'fields'=>array('Lugar.lugar_id','Lugar.nombre_del_lugar'),
						'order' => 'Lugar.nombre_del_lugar'	
						)));
					}
					if(isset($lugar[2])) $this->data['Evento']['codigo_municipio']=$lugar[2]['Lugar']['lugar_id'];
					if(isset($lugar[3])) $this->data['Evento']['nombre_barrio']=$lugar[3]['Lugar']['nombre_del_lugar'];
					if(isset($lugar[3])) $this->data['Evento']['nombre_tipo_intermun']=$lugar[3]['Lugar']['tipo_de_lugar'];
					
				}else{
					if ($this->Evento->save($this->data)) {
						$this->redirect(array('controller'=>'pacientes', 'action' => 'edit',$this->data['Evento']['paciente_id']));
					} else {
						$this->Session->setFlash('El registro no pudo ser guardado, por favor contacte al administrador');
			$this->render('/elements/error');
					}
				}
			}else{
			$this->Session->setFlash('Debe proporcionar un id de evento vàlido');
			$this->render('/elements/error');
			}	
		}
		$pacientes = $this->Evento->Paciente->find('list');
		$lugars = $this->Evento->Lugar->find('list');
		$usuarios = $this->Evento->Usuario->find('list');
		$this->set(compact('pacientes', 'lugars', 'usuarios'));
	}

	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(sprintf(__('Invalid id for %s', true), 'evento'));
			$this->redirect(array('controller'=>'pacientes','action'=>'index'));
		}
		if ($this->Evento->delete($id)) {
			$this->Session->setFlash(sprintf(__('%s deleted', true), 'Evento'));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(sprintf(__('%s was not deleted', true), 'Evento'));
		$this->redirect(array('action' => 'index'));
	}
}
?>